package org.xtext.example.mydsl.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.xtext.example.mydsl.services.MyDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
@SuppressWarnings("all")
public class InternalMyDslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_VARIABLE", "RULE_TVAR", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'Types{'", "';'", "'}'", "'Declarations{'", "'Main{'", "'import'", "'='", "'let'", "':'", "'in'", "'\\\\('", "').'", "'('", "')'", "'/\\\\'", "'.'", "'['", "']'", "'->'", "'forall'"
    };
    public static final int RULE_ID=5;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int RULE_TVAR=7;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=12;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=10;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=9;
    public static final int T__30=30;
    public static final int T__19=19;
    public static final int T__31=31;
    public static final int RULE_STRING=4;
    public static final int T__32=32;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int RULE_VARIABLE=6;
    public static final int T__17=17;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=8;
    public static final int RULE_WS=11;

    // delegates
    // delegators


        public InternalMyDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalMyDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalMyDslParser.tokenNames; }
    public String getGrammarFileName() { return "../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g"; }



    /*
      This grammar contains a lot of empty actions to work around a bug in ANTLR.
      Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.
    */
     
     	private MyDslGrammarAccess grammarAccess;
     	
        public InternalMyDslParser(TokenStream input, MyDslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "FileSF";	
       	}
       	
       	@Override
       	protected MyDslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleFileSF"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:73:1: entryRuleFileSF returns [EObject current=null] : iv_ruleFileSF= ruleFileSF EOF ;
    public final EObject entryRuleFileSF() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFileSF = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:74:2: (iv_ruleFileSF= ruleFileSF EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:75:2: iv_ruleFileSF= ruleFileSF EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFileSFRule()); 
            }
            pushFollow(FOLLOW_ruleFileSF_in_entryRuleFileSF81);
            iv_ruleFileSF=ruleFileSF();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFileSF; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleFileSF91); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFileSF"


    // $ANTLR start "ruleFileSF"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:82:1: ruleFileSF returns [EObject current=null] : (this_Prog_0= ruleProg | this_Prog1_1= ruleProg1 ) ;
    public final EObject ruleFileSF() throws RecognitionException {
        EObject current = null;

        EObject this_Prog_0 = null;

        EObject this_Prog1_1 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:85:28: ( (this_Prog_0= ruleProg | this_Prog1_1= ruleProg1 ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:86:1: (this_Prog_0= ruleProg | this_Prog1_1= ruleProg1 )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:86:1: (this_Prog_0= ruleProg | this_Prog1_1= ruleProg1 )
            int alt1=2;
            switch ( input.LA(1) ) {
            case 18:
                {
                int LA1_1 = input.LA(2);

                if ( (synpred1_InternalMyDsl()) ) {
                    alt1=1;
                }
                else if ( (true) ) {
                    alt1=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 1, 1, input);

                    throw nvae;
                }
                }
                break;
            case 13:
                {
                int LA1_2 = input.LA(2);

                if ( (synpred1_InternalMyDsl()) ) {
                    alt1=1;
                }
                else if ( (true) ) {
                    alt1=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 1, 2, input);

                    throw nvae;
                }
                }
                break;
            case 16:
                {
                int LA1_3 = input.LA(2);

                if ( (synpred1_InternalMyDsl()) ) {
                    alt1=1;
                }
                else if ( (true) ) {
                    alt1=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 1, 3, input);

                    throw nvae;
                }
                }
                break;
            case 17:
                {
                alt1=1;
                }
                break;
            case EOF:
                {
                alt1=2;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 1, 0, input);

                throw nvae;
            }

            switch (alt1) {
                case 1 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:87:2: this_Prog_0= ruleProg
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getFileSFAccess().getProgParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleProg_in_ruleFileSF141);
                    this_Prog_0=ruleProg();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Prog_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:100:2: this_Prog1_1= ruleProg1
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getFileSFAccess().getProg1ParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleProg1_in_ruleFileSF171);
                    this_Prog1_1=ruleProg1();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Prog1_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFileSF"


    // $ANTLR start "entryRuleProg"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:119:1: entryRuleProg returns [EObject current=null] : iv_ruleProg= ruleProg EOF ;
    public final EObject entryRuleProg() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProg = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:120:2: (iv_ruleProg= ruleProg EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:121:2: iv_ruleProg= ruleProg EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getProgRule()); 
            }
            pushFollow(FOLLOW_ruleProg_in_entryRuleProg206);
            iv_ruleProg=ruleProg();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleProg; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleProg216); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleProg"


    // $ANTLR start "ruleProg"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:128:1: ruleProg returns [EObject current=null] : ( ( (lv_importList_0_0= ruleImport ) )? (otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}' )? (otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}' )? otherlv_9= 'Main{' ( (lv_main_10_0= ruleTerm ) ) otherlv_11= '}' ) ;
    public final EObject ruleProg() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        EObject lv_importList_0_0 = null;

        EObject lv_td_2_0 = null;

        EObject lv_d_6_0 = null;

        EObject lv_main_10_0 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:131:28: ( ( ( (lv_importList_0_0= ruleImport ) )? (otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}' )? (otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}' )? otherlv_9= 'Main{' ( (lv_main_10_0= ruleTerm ) ) otherlv_11= '}' ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:132:1: ( ( (lv_importList_0_0= ruleImport ) )? (otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}' )? (otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}' )? otherlv_9= 'Main{' ( (lv_main_10_0= ruleTerm ) ) otherlv_11= '}' )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:132:1: ( ( (lv_importList_0_0= ruleImport ) )? (otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}' )? (otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}' )? otherlv_9= 'Main{' ( (lv_main_10_0= ruleTerm ) ) otherlv_11= '}' )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:132:2: ( (lv_importList_0_0= ruleImport ) )? (otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}' )? (otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}' )? otherlv_9= 'Main{' ( (lv_main_10_0= ruleTerm ) ) otherlv_11= '}'
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:132:2: ( (lv_importList_0_0= ruleImport ) )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==18) ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:133:1: (lv_importList_0_0= ruleImport )
                    {
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:133:1: (lv_importList_0_0= ruleImport )
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:134:3: lv_importList_0_0= ruleImport
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getProgAccess().getImportListImportParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleImport_in_ruleProg262);
                    lv_importList_0_0=ruleImport();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getProgRule());
                      	        }
                             		add(
                             			current, 
                             			"importList",
                              		lv_importList_0_0, 
                              		"Import");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:150:3: (otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}' )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==13) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:150:5: otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}'
                    {
                    otherlv_1=(Token)match(input,13,FOLLOW_13_in_ruleProg276); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getProgAccess().getTypesKeyword_1_0());
                          
                    }
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:154:1: ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )*
                    loop3:
                    do {
                        int alt3=2;
                        int LA3_0 = input.LA(1);

                        if ( (LA3_0==RULE_ID) ) {
                            alt3=1;
                        }


                        switch (alt3) {
                    	case 1 :
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:154:2: ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';'
                    	    {
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:154:2: ( (lv_td_2_0= ruleTypeDich ) )
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:155:1: (lv_td_2_0= ruleTypeDich )
                    	    {
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:155:1: (lv_td_2_0= ruleTypeDich )
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:156:3: lv_td_2_0= ruleTypeDich
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getProgAccess().getTdTypeDichParserRuleCall_1_1_0_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleTypeDich_in_ruleProg298);
                    	    lv_td_2_0=ruleTypeDich();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getProgRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"td",
                    	              		lv_td_2_0, 
                    	              		"TypeDich");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }

                    	    otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleProg310); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getProgAccess().getSemicolonKeyword_1_1_1());
                    	          
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop3;
                        }
                    } while (true);

                    otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleProg324); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getProgAccess().getRightCurlyBracketKeyword_1_2());
                          
                    }

                    }
                    break;

            }

            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:180:3: (otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}' )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==16) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:180:5: otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}'
                    {
                    otherlv_5=(Token)match(input,16,FOLLOW_16_in_ruleProg339); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getProgAccess().getDeclarationsKeyword_2_0());
                          
                    }
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:184:1: ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )*
                    loop5:
                    do {
                        int alt5=2;
                        int LA5_0 = input.LA(1);

                        if ( (LA5_0==RULE_ID) ) {
                            alt5=1;
                        }


                        switch (alt5) {
                    	case 1 :
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:184:2: ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';'
                    	    {
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:184:2: ( (lv_d_6_0= ruleDich ) )
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:185:1: (lv_d_6_0= ruleDich )
                    	    {
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:185:1: (lv_d_6_0= ruleDich )
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:186:3: lv_d_6_0= ruleDich
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getProgAccess().getDDichParserRuleCall_2_1_0_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleDich_in_ruleProg361);
                    	    lv_d_6_0=ruleDich();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getProgRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"d",
                    	              		lv_d_6_0, 
                    	              		"Dich");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }

                    	    otherlv_7=(Token)match(input,14,FOLLOW_14_in_ruleProg373); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_7, grammarAccess.getProgAccess().getSemicolonKeyword_2_1_1());
                    	          
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop5;
                        }
                    } while (true);

                    otherlv_8=(Token)match(input,15,FOLLOW_15_in_ruleProg387); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getProgAccess().getRightCurlyBracketKeyword_2_2());
                          
                    }

                    }
                    break;

            }

            otherlv_9=(Token)match(input,17,FOLLOW_17_in_ruleProg401); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_9, grammarAccess.getProgAccess().getMainKeyword_3());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:214:1: ( (lv_main_10_0= ruleTerm ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:215:1: (lv_main_10_0= ruleTerm )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:215:1: (lv_main_10_0= ruleTerm )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:216:3: lv_main_10_0= ruleTerm
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getProgAccess().getMainTermParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleTerm_in_ruleProg422);
            lv_main_10_0=ruleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getProgRule());
              	        }
                     		set(
                     			current, 
                     			"main",
                      		lv_main_10_0, 
                      		"Term");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_11=(Token)match(input,15,FOLLOW_15_in_ruleProg434); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_11, grammarAccess.getProgAccess().getRightCurlyBracketKeyword_5());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProg"


    // $ANTLR start "entryRuleProg1"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:244:1: entryRuleProg1 returns [EObject current=null] : iv_ruleProg1= ruleProg1 EOF ;
    public final EObject entryRuleProg1() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProg1 = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:245:2: (iv_ruleProg1= ruleProg1 EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:246:2: iv_ruleProg1= ruleProg1 EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getProg1Rule()); 
            }
            pushFollow(FOLLOW_ruleProg1_in_entryRuleProg1470);
            iv_ruleProg1=ruleProg1();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleProg1; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleProg1480); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleProg1"


    // $ANTLR start "ruleProg1"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:253:1: ruleProg1 returns [EObject current=null] : ( ( (lv_importList_0_0= ruleImport ) )? (otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}' )? (otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}' )? ) ;
    public final EObject ruleProg1() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        EObject lv_importList_0_0 = null;

        EObject lv_td_2_0 = null;

        EObject lv_d_6_0 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:256:28: ( ( ( (lv_importList_0_0= ruleImport ) )? (otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}' )? (otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}' )? ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:257:1: ( ( (lv_importList_0_0= ruleImport ) )? (otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}' )? (otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}' )? )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:257:1: ( ( (lv_importList_0_0= ruleImport ) )? (otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}' )? (otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}' )? )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:257:2: ( (lv_importList_0_0= ruleImport ) )? (otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}' )? (otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}' )?
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:257:2: ( (lv_importList_0_0= ruleImport ) )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==18) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:258:1: (lv_importList_0_0= ruleImport )
                    {
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:258:1: (lv_importList_0_0= ruleImport )
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:259:3: lv_importList_0_0= ruleImport
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getProg1Access().getImportListImportParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleImport_in_ruleProg1526);
                    lv_importList_0_0=ruleImport();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getProg1Rule());
                      	        }
                             		add(
                             			current, 
                             			"importList",
                              		lv_importList_0_0, 
                              		"Import");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:275:3: (otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}' )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==13) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:275:5: otherlv_1= 'Types{' ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )* otherlv_4= '}'
                    {
                    otherlv_1=(Token)match(input,13,FOLLOW_13_in_ruleProg1540); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getProg1Access().getTypesKeyword_1_0());
                          
                    }
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:279:1: ( ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';' )*
                    loop8:
                    do {
                        int alt8=2;
                        int LA8_0 = input.LA(1);

                        if ( (LA8_0==RULE_ID) ) {
                            alt8=1;
                        }


                        switch (alt8) {
                    	case 1 :
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:279:2: ( (lv_td_2_0= ruleTypeDich ) ) otherlv_3= ';'
                    	    {
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:279:2: ( (lv_td_2_0= ruleTypeDich ) )
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:280:1: (lv_td_2_0= ruleTypeDich )
                    	    {
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:280:1: (lv_td_2_0= ruleTypeDich )
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:281:3: lv_td_2_0= ruleTypeDich
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getProg1Access().getTdTypeDichParserRuleCall_1_1_0_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleTypeDich_in_ruleProg1562);
                    	    lv_td_2_0=ruleTypeDich();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getProg1Rule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"td",
                    	              		lv_td_2_0, 
                    	              		"TypeDich");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }

                    	    otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleProg1574); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getProg1Access().getSemicolonKeyword_1_1_1());
                    	          
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop8;
                        }
                    } while (true);

                    otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleProg1588); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getProg1Access().getRightCurlyBracketKeyword_1_2());
                          
                    }

                    }
                    break;

            }

            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:305:3: (otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}' )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==16) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:305:5: otherlv_5= 'Declarations{' ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )* otherlv_8= '}'
                    {
                    otherlv_5=(Token)match(input,16,FOLLOW_16_in_ruleProg1603); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getProg1Access().getDeclarationsKeyword_2_0());
                          
                    }
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:309:1: ( ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';' )*
                    loop10:
                    do {
                        int alt10=2;
                        int LA10_0 = input.LA(1);

                        if ( (LA10_0==RULE_ID) ) {
                            alt10=1;
                        }


                        switch (alt10) {
                    	case 1 :
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:309:2: ( (lv_d_6_0= ruleDich ) ) otherlv_7= ';'
                    	    {
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:309:2: ( (lv_d_6_0= ruleDich ) )
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:310:1: (lv_d_6_0= ruleDich )
                    	    {
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:310:1: (lv_d_6_0= ruleDich )
                    	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:311:3: lv_d_6_0= ruleDich
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getProg1Access().getDDichParserRuleCall_2_1_0_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleDich_in_ruleProg1625);
                    	    lv_d_6_0=ruleDich();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getProg1Rule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"d",
                    	              		lv_d_6_0, 
                    	              		"Dich");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }

                    	    otherlv_7=(Token)match(input,14,FOLLOW_14_in_ruleProg1637); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_7, grammarAccess.getProg1Access().getSemicolonKeyword_2_1_1());
                    	          
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop10;
                        }
                    } while (true);

                    otherlv_8=(Token)match(input,15,FOLLOW_15_in_ruleProg1651); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getProg1Access().getRightCurlyBracketKeyword_2_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProg1"


    // $ANTLR start "entryRuleImport"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:343:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
    public final EObject entryRuleImport() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImport = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:344:2: (iv_ruleImport= ruleImport EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:345:2: iv_ruleImport= ruleImport EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getImportRule()); 
            }
            pushFollow(FOLLOW_ruleImport_in_entryRuleImport689);
            iv_ruleImport=ruleImport();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleImport; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleImport699); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImport"


    // $ANTLR start "ruleImport"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:352:1: ruleImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) ) ;
    public final EObject ruleImport() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_importURI_1_0=null;

         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:355:28: ( (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:356:1: (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:356:1: (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:356:3: otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) )
            {
            otherlv_0=(Token)match(input,18,FOLLOW_18_in_ruleImport736); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:360:1: ( (lv_importURI_1_0= RULE_STRING ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:361:1: (lv_importURI_1_0= RULE_STRING )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:361:1: (lv_importURI_1_0= RULE_STRING )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:362:3: lv_importURI_1_0= RULE_STRING
            {
            lv_importURI_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleImport753); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_importURI_1_0, grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getImportRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"importURI",
                      		lv_importURI_1_0, 
                      		"STRING");
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImport"


    // $ANTLR start "entryRuleDich"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:386:1: entryRuleDich returns [EObject current=null] : iv_ruleDich= ruleDich EOF ;
    public final EObject entryRuleDich() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDich = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:387:2: (iv_ruleDich= ruleDich EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:388:2: iv_ruleDich= ruleDich EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDichRule()); 
            }
            pushFollow(FOLLOW_ruleDich_in_entryRuleDich794);
            iv_ruleDich=ruleDich();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDich; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDich804); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDich"


    // $ANTLR start "ruleDich"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:395:1: ruleDich returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_term_2_0= ruleTerm ) ) ) ;
    public final EObject ruleDich() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        EObject lv_term_2_0 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:398:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_term_2_0= ruleTerm ) ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:399:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_term_2_0= ruleTerm ) ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:399:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_term_2_0= ruleTerm ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:399:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_term_2_0= ruleTerm ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:399:2: ( (lv_name_0_0= RULE_ID ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:400:1: (lv_name_0_0= RULE_ID )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:400:1: (lv_name_0_0= RULE_ID )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:401:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDich846); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getDichAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getDichRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,19,FOLLOW_19_in_ruleDich863); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getDichAccess().getEqualsSignKeyword_1());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:421:1: ( (lv_term_2_0= ruleTerm ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:422:1: (lv_term_2_0= ruleTerm )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:422:1: (lv_term_2_0= ruleTerm )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:423:3: lv_term_2_0= ruleTerm
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getDichAccess().getTermTermParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleTerm_in_ruleDich884);
            lv_term_2_0=ruleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getDichRule());
              	        }
                     		set(
                     			current, 
                     			"term",
                      		lv_term_2_0, 
                      		"Term");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDich"


    // $ANTLR start "entryRuleNrif"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:447:1: entryRuleNrif returns [EObject current=null] : iv_ruleNrif= ruleNrif EOF ;
    public final EObject entryRuleNrif() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNrif = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:448:2: (iv_ruleNrif= ruleNrif EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:449:2: iv_ruleNrif= ruleNrif EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNrifRule()); 
            }
            pushFollow(FOLLOW_ruleNrif_in_entryRuleNrif920);
            iv_ruleNrif=ruleNrif();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNrif; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNrif930); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNrif"


    // $ANTLR start "ruleNrif"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:456:1: ruleNrif returns [EObject current=null] : ( (otherlv_0= RULE_ID ) ) ;
    public final EObject ruleNrif() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;

         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:459:28: ( ( (otherlv_0= RULE_ID ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:460:1: ( (otherlv_0= RULE_ID ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:460:1: ( (otherlv_0= RULE_ID ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:461:1: (otherlv_0= RULE_ID )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:461:1: (otherlv_0= RULE_ID )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:462:3: otherlv_0= RULE_ID
            {
            if ( state.backtracking==0 ) {
               
              		  /* */ 
              		
            }
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getNrifRule());
              	        }
                      
            }
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleNrif978); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		newLeafNode(otherlv_0, grammarAccess.getNrifAccess().getNomeDichCrossReference_0()); 
              	
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNrif"


    // $ANTLR start "entryRuleTerm"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:484:1: entryRuleTerm returns [EObject current=null] : iv_ruleTerm= ruleTerm EOF ;
    public final EObject entryRuleTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTerm = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:485:2: (iv_ruleTerm= ruleTerm EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:486:2: iv_ruleTerm= ruleTerm EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTermRule()); 
            }
            pushFollow(FOLLOW_ruleTerm_in_entryRuleTerm1013);
            iv_ruleTerm=ruleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTerm; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTerm1023); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTerm"


    // $ANTLR start "ruleTerm"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:493:1: ruleTerm returns [EObject current=null] : (this_Var_0= ruleVar | this_Abs_1= ruleAbs | this_App_2= ruleApp | this_Uq_3= ruleUq | ( ( '[' )=>this_Tapp_4= ruleTapp ) | this_Nrif_5= ruleNrif | this_Let_6= ruleLet ) ;
    public final EObject ruleTerm() throws RecognitionException {
        EObject current = null;

        EObject this_Var_0 = null;

        EObject this_Abs_1 = null;

        EObject this_App_2 = null;

        EObject this_Uq_3 = null;

        EObject this_Tapp_4 = null;

        EObject this_Nrif_5 = null;

        EObject this_Let_6 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:496:28: ( (this_Var_0= ruleVar | this_Abs_1= ruleAbs | this_App_2= ruleApp | this_Uq_3= ruleUq | ( ( '[' )=>this_Tapp_4= ruleTapp ) | this_Nrif_5= ruleNrif | this_Let_6= ruleLet ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:497:1: (this_Var_0= ruleVar | this_Abs_1= ruleAbs | this_App_2= ruleApp | this_Uq_3= ruleUq | ( ( '[' )=>this_Tapp_4= ruleTapp ) | this_Nrif_5= ruleNrif | this_Let_6= ruleLet )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:497:1: (this_Var_0= ruleVar | this_Abs_1= ruleAbs | this_App_2= ruleApp | this_Uq_3= ruleUq | ( ( '[' )=>this_Tapp_4= ruleTapp ) | this_Nrif_5= ruleNrif | this_Let_6= ruleLet )
            int alt12=7;
            switch ( input.LA(1) ) {
            case RULE_VARIABLE:
                {
                alt12=1;
                }
                break;
            case 23:
                {
                alt12=2;
                }
                break;
            case 25:
                {
                alt12=3;
                }
                break;
            case 27:
                {
                alt12=4;
                }
                break;
            case 29:
                {
                alt12=5;
                }
                break;
            case RULE_ID:
                {
                alt12=6;
                }
                break;
            case 20:
                {
                alt12=7;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;
            }

            switch (alt12) {
                case 1 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:498:2: this_Var_0= ruleVar
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTermAccess().getVarParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleVar_in_ruleTerm1073);
                    this_Var_0=ruleVar();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Var_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:511:2: this_Abs_1= ruleAbs
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTermAccess().getAbsParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleAbs_in_ruleTerm1103);
                    this_Abs_1=ruleAbs();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Abs_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:524:2: this_App_2= ruleApp
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTermAccess().getAppParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleApp_in_ruleTerm1133);
                    this_App_2=ruleApp();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_App_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:537:2: this_Uq_3= ruleUq
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTermAccess().getUqParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleUq_in_ruleTerm1163);
                    this_Uq_3=ruleUq();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Uq_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:549:6: ( ( '[' )=>this_Tapp_4= ruleTapp )
                    {
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:549:6: ( ( '[' )=>this_Tapp_4= ruleTapp )
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:549:7: ( '[' )=>this_Tapp_4= ruleTapp
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTermAccess().getTappParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleTapp_in_ruleTerm1201);
                    this_Tapp_4=ruleTapp();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Tapp_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 6 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:564:2: this_Nrif_5= ruleNrif
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTermAccess().getNrifParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_ruleNrif_in_ruleTerm1232);
                    this_Nrif_5=ruleNrif();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Nrif_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:577:2: this_Let_6= ruleLet
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTermAccess().getLetParserRuleCall_6()); 
                          
                    }
                    pushFollow(FOLLOW_ruleLet_in_ruleTerm1262);
                    this_Let_6=ruleLet();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Let_6; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTerm"


    // $ANTLR start "entryRuleLet"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:596:1: entryRuleLet returns [EObject current=null] : iv_ruleLet= ruleLet EOF ;
    public final EObject entryRuleLet() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLet = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:597:2: (iv_ruleLet= ruleLet EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:598:2: iv_ruleLet= ruleLet EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLetRule()); 
            }
            pushFollow(FOLLOW_ruleLet_in_entryRuleLet1297);
            iv_ruleLet=ruleLet();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLet; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleLet1307); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLet"


    // $ANTLR start "ruleLet"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:605:1: ruleLet returns [EObject current=null] : (otherlv_0= 'let' ( (lv_var_1_0= RULE_VARIABLE ) ) otherlv_2= ':' ( (lv_type_3_0= ruleT ) ) otherlv_4= '=' ( (lv_t1_5_0= ruleTerm ) ) otherlv_6= 'in' ( (lv_t2_7_0= ruleTerm ) ) ) ;
    public final EObject ruleLet() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_var_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_type_3_0 = null;

        EObject lv_t1_5_0 = null;

        EObject lv_t2_7_0 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:608:28: ( (otherlv_0= 'let' ( (lv_var_1_0= RULE_VARIABLE ) ) otherlv_2= ':' ( (lv_type_3_0= ruleT ) ) otherlv_4= '=' ( (lv_t1_5_0= ruleTerm ) ) otherlv_6= 'in' ( (lv_t2_7_0= ruleTerm ) ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:609:1: (otherlv_0= 'let' ( (lv_var_1_0= RULE_VARIABLE ) ) otherlv_2= ':' ( (lv_type_3_0= ruleT ) ) otherlv_4= '=' ( (lv_t1_5_0= ruleTerm ) ) otherlv_6= 'in' ( (lv_t2_7_0= ruleTerm ) ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:609:1: (otherlv_0= 'let' ( (lv_var_1_0= RULE_VARIABLE ) ) otherlv_2= ':' ( (lv_type_3_0= ruleT ) ) otherlv_4= '=' ( (lv_t1_5_0= ruleTerm ) ) otherlv_6= 'in' ( (lv_t2_7_0= ruleTerm ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:609:3: otherlv_0= 'let' ( (lv_var_1_0= RULE_VARIABLE ) ) otherlv_2= ':' ( (lv_type_3_0= ruleT ) ) otherlv_4= '=' ( (lv_t1_5_0= ruleTerm ) ) otherlv_6= 'in' ( (lv_t2_7_0= ruleTerm ) )
            {
            otherlv_0=(Token)match(input,20,FOLLOW_20_in_ruleLet1344); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getLetAccess().getLetKeyword_0());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:613:1: ( (lv_var_1_0= RULE_VARIABLE ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:614:1: (lv_var_1_0= RULE_VARIABLE )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:614:1: (lv_var_1_0= RULE_VARIABLE )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:615:3: lv_var_1_0= RULE_VARIABLE
            {
            lv_var_1_0=(Token)match(input,RULE_VARIABLE,FOLLOW_RULE_VARIABLE_in_ruleLet1361); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_var_1_0, grammarAccess.getLetAccess().getVarVariableTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getLetRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"var",
                      		lv_var_1_0, 
                      		"variable");
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,21,FOLLOW_21_in_ruleLet1378); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getLetAccess().getColonKeyword_2());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:635:1: ( (lv_type_3_0= ruleT ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:636:1: (lv_type_3_0= ruleT )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:636:1: (lv_type_3_0= ruleT )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:637:3: lv_type_3_0= ruleT
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getLetAccess().getTypeTParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleT_in_ruleLet1399);
            lv_type_3_0=ruleT();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getLetRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_3_0, 
                      		"T");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,19,FOLLOW_19_in_ruleLet1411); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getLetAccess().getEqualsSignKeyword_4());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:657:1: ( (lv_t1_5_0= ruleTerm ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:658:1: (lv_t1_5_0= ruleTerm )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:658:1: (lv_t1_5_0= ruleTerm )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:659:3: lv_t1_5_0= ruleTerm
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getLetAccess().getT1TermParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleTerm_in_ruleLet1432);
            lv_t1_5_0=ruleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getLetRule());
              	        }
                     		set(
                     			current, 
                     			"t1",
                      		lv_t1_5_0, 
                      		"Term");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_6=(Token)match(input,22,FOLLOW_22_in_ruleLet1444); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getLetAccess().getInKeyword_6());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:679:1: ( (lv_t2_7_0= ruleTerm ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:680:1: (lv_t2_7_0= ruleTerm )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:680:1: (lv_t2_7_0= ruleTerm )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:681:3: lv_t2_7_0= ruleTerm
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getLetAccess().getT2TermParserRuleCall_7_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleTerm_in_ruleLet1465);
            lv_t2_7_0=ruleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getLetRule());
              	        }
                     		set(
                     			current, 
                     			"t2",
                      		lv_t2_7_0, 
                      		"Term");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLet"


    // $ANTLR start "entryRuleVar"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:705:1: entryRuleVar returns [EObject current=null] : iv_ruleVar= ruleVar EOF ;
    public final EObject entryRuleVar() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVar = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:706:2: (iv_ruleVar= ruleVar EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:707:2: iv_ruleVar= ruleVar EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getVarRule()); 
            }
            pushFollow(FOLLOW_ruleVar_in_entryRuleVar1501);
            iv_ruleVar=ruleVar();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleVar; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleVar1511); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVar"


    // $ANTLR start "ruleVar"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:714:1: ruleVar returns [EObject current=null] : ( (lv_name_0_0= RULE_VARIABLE ) ) ;
    public final EObject ruleVar() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;

         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:717:28: ( ( (lv_name_0_0= RULE_VARIABLE ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:718:1: ( (lv_name_0_0= RULE_VARIABLE ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:718:1: ( (lv_name_0_0= RULE_VARIABLE ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:719:1: (lv_name_0_0= RULE_VARIABLE )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:719:1: (lv_name_0_0= RULE_VARIABLE )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:720:3: lv_name_0_0= RULE_VARIABLE
            {
            lv_name_0_0=(Token)match(input,RULE_VARIABLE,FOLLOW_RULE_VARIABLE_in_ruleVar1552); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getVarAccess().getNameVariableTerminalRuleCall_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getVarRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"variable");
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVar"


    // $ANTLR start "entryRuleAbs"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:744:1: entryRuleAbs returns [EObject current=null] : iv_ruleAbs= ruleAbs EOF ;
    public final EObject entryRuleAbs() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAbs = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:745:2: (iv_ruleAbs= ruleAbs EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:746:2: iv_ruleAbs= ruleAbs EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAbsRule()); 
            }
            pushFollow(FOLLOW_ruleAbs_in_entryRuleAbs1592);
            iv_ruleAbs=ruleAbs();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAbs; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleAbs1602); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAbs"


    // $ANTLR start "ruleAbs"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:753:1: ruleAbs returns [EObject current=null] : (otherlv_0= '\\\\(' ( (lv_param_1_0= RULE_VARIABLE ) ) otherlv_2= ':' ( (lv_type_3_0= ruleT ) ) otherlv_4= ').' ( (lv_body_5_0= ruleTerm ) ) ) ;
    public final EObject ruleAbs() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_param_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_type_3_0 = null;

        EObject lv_body_5_0 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:756:28: ( (otherlv_0= '\\\\(' ( (lv_param_1_0= RULE_VARIABLE ) ) otherlv_2= ':' ( (lv_type_3_0= ruleT ) ) otherlv_4= ').' ( (lv_body_5_0= ruleTerm ) ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:757:1: (otherlv_0= '\\\\(' ( (lv_param_1_0= RULE_VARIABLE ) ) otherlv_2= ':' ( (lv_type_3_0= ruleT ) ) otherlv_4= ').' ( (lv_body_5_0= ruleTerm ) ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:757:1: (otherlv_0= '\\\\(' ( (lv_param_1_0= RULE_VARIABLE ) ) otherlv_2= ':' ( (lv_type_3_0= ruleT ) ) otherlv_4= ').' ( (lv_body_5_0= ruleTerm ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:757:3: otherlv_0= '\\\\(' ( (lv_param_1_0= RULE_VARIABLE ) ) otherlv_2= ':' ( (lv_type_3_0= ruleT ) ) otherlv_4= ').' ( (lv_body_5_0= ruleTerm ) )
            {
            otherlv_0=(Token)match(input,23,FOLLOW_23_in_ruleAbs1639); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getAbsAccess().getReverseSolidusLeftParenthesisKeyword_0());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:761:1: ( (lv_param_1_0= RULE_VARIABLE ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:762:1: (lv_param_1_0= RULE_VARIABLE )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:762:1: (lv_param_1_0= RULE_VARIABLE )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:763:3: lv_param_1_0= RULE_VARIABLE
            {
            lv_param_1_0=(Token)match(input,RULE_VARIABLE,FOLLOW_RULE_VARIABLE_in_ruleAbs1656); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_param_1_0, grammarAccess.getAbsAccess().getParamVariableTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getAbsRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"param",
                      		lv_param_1_0, 
                      		"variable");
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,21,FOLLOW_21_in_ruleAbs1673); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getAbsAccess().getColonKeyword_2());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:783:1: ( (lv_type_3_0= ruleT ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:784:1: (lv_type_3_0= ruleT )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:784:1: (lv_type_3_0= ruleT )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:785:3: lv_type_3_0= ruleT
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getAbsAccess().getTypeTParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleT_in_ruleAbs1694);
            lv_type_3_0=ruleT();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getAbsRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_3_0, 
                      		"T");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,24,FOLLOW_24_in_ruleAbs1706); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getAbsAccess().getRightParenthesisFullStopKeyword_4());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:805:1: ( (lv_body_5_0= ruleTerm ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:806:1: (lv_body_5_0= ruleTerm )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:806:1: (lv_body_5_0= ruleTerm )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:807:3: lv_body_5_0= ruleTerm
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getAbsAccess().getBodyTermParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleTerm_in_ruleAbs1727);
            lv_body_5_0=ruleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getAbsRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_5_0, 
                      		"Term");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAbs"


    // $ANTLR start "entryRuleApp"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:831:1: entryRuleApp returns [EObject current=null] : iv_ruleApp= ruleApp EOF ;
    public final EObject entryRuleApp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleApp = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:832:2: (iv_ruleApp= ruleApp EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:833:2: iv_ruleApp= ruleApp EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAppRule()); 
            }
            pushFollow(FOLLOW_ruleApp_in_entryRuleApp1763);
            iv_ruleApp=ruleApp();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleApp; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleApp1773); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleApp"


    // $ANTLR start "ruleApp"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:840:1: ruleApp returns [EObject current=null] : (otherlv_0= '(' ( (lv_t1_1_0= ruleTerm ) ) otherlv_2= ')' ( (lv_t2_3_0= ruleTerm ) ) ) ;
    public final EObject ruleApp() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_t1_1_0 = null;

        EObject lv_t2_3_0 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:843:28: ( (otherlv_0= '(' ( (lv_t1_1_0= ruleTerm ) ) otherlv_2= ')' ( (lv_t2_3_0= ruleTerm ) ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:844:1: (otherlv_0= '(' ( (lv_t1_1_0= ruleTerm ) ) otherlv_2= ')' ( (lv_t2_3_0= ruleTerm ) ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:844:1: (otherlv_0= '(' ( (lv_t1_1_0= ruleTerm ) ) otherlv_2= ')' ( (lv_t2_3_0= ruleTerm ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:844:3: otherlv_0= '(' ( (lv_t1_1_0= ruleTerm ) ) otherlv_2= ')' ( (lv_t2_3_0= ruleTerm ) )
            {
            otherlv_0=(Token)match(input,25,FOLLOW_25_in_ruleApp1810); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getAppAccess().getLeftParenthesisKeyword_0());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:848:1: ( (lv_t1_1_0= ruleTerm ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:849:1: (lv_t1_1_0= ruleTerm )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:849:1: (lv_t1_1_0= ruleTerm )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:850:3: lv_t1_1_0= ruleTerm
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getAppAccess().getT1TermParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleTerm_in_ruleApp1831);
            lv_t1_1_0=ruleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getAppRule());
              	        }
                     		set(
                     			current, 
                     			"t1",
                      		lv_t1_1_0, 
                      		"Term");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,26,FOLLOW_26_in_ruleApp1843); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getAppAccess().getRightParenthesisKeyword_2());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:870:1: ( (lv_t2_3_0= ruleTerm ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:871:1: (lv_t2_3_0= ruleTerm )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:871:1: (lv_t2_3_0= ruleTerm )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:872:3: lv_t2_3_0= ruleTerm
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getAppAccess().getT2TermParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleTerm_in_ruleApp1864);
            lv_t2_3_0=ruleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getAppRule());
              	        }
                     		set(
                     			current, 
                     			"t2",
                      		lv_t2_3_0, 
                      		"Term");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleApp"


    // $ANTLR start "entryRuleUq"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:896:1: entryRuleUq returns [EObject current=null] : iv_ruleUq= ruleUq EOF ;
    public final EObject entryRuleUq() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUq = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:897:2: (iv_ruleUq= ruleUq EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:898:2: iv_ruleUq= ruleUq EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUqRule()); 
            }
            pushFollow(FOLLOW_ruleUq_in_entryRuleUq1900);
            iv_ruleUq=ruleUq();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUq; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleUq1910); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUq"


    // $ANTLR start "ruleUq"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:905:1: ruleUq returns [EObject current=null] : (otherlv_0= '/\\\\' ( (lv_var_1_0= RULE_TVAR ) ) otherlv_2= '.' ( (lv_term_3_0= ruleTerm ) ) ) ;
    public final EObject ruleUq() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_var_1_0=null;
        Token otherlv_2=null;
        EObject lv_term_3_0 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:908:28: ( (otherlv_0= '/\\\\' ( (lv_var_1_0= RULE_TVAR ) ) otherlv_2= '.' ( (lv_term_3_0= ruleTerm ) ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:909:1: (otherlv_0= '/\\\\' ( (lv_var_1_0= RULE_TVAR ) ) otherlv_2= '.' ( (lv_term_3_0= ruleTerm ) ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:909:1: (otherlv_0= '/\\\\' ( (lv_var_1_0= RULE_TVAR ) ) otherlv_2= '.' ( (lv_term_3_0= ruleTerm ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:909:3: otherlv_0= '/\\\\' ( (lv_var_1_0= RULE_TVAR ) ) otherlv_2= '.' ( (lv_term_3_0= ruleTerm ) )
            {
            otherlv_0=(Token)match(input,27,FOLLOW_27_in_ruleUq1947); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getUqAccess().getSolidusReverseSolidusKeyword_0());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:913:1: ( (lv_var_1_0= RULE_TVAR ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:914:1: (lv_var_1_0= RULE_TVAR )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:914:1: (lv_var_1_0= RULE_TVAR )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:915:3: lv_var_1_0= RULE_TVAR
            {
            lv_var_1_0=(Token)match(input,RULE_TVAR,FOLLOW_RULE_TVAR_in_ruleUq1964); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_var_1_0, grammarAccess.getUqAccess().getVarTvarTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getUqRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"var",
                      		lv_var_1_0, 
                      		"tvar");
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleUq1981); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getUqAccess().getFullStopKeyword_2());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:935:1: ( (lv_term_3_0= ruleTerm ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:936:1: (lv_term_3_0= ruleTerm )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:936:1: (lv_term_3_0= ruleTerm )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:937:3: lv_term_3_0= ruleTerm
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getUqAccess().getTermTermParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleTerm_in_ruleUq2002);
            lv_term_3_0=ruleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getUqRule());
              	        }
                     		set(
                     			current, 
                     			"term",
                      		lv_term_3_0, 
                      		"Term");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUq"


    // $ANTLR start "entryRuleTapp"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:961:1: entryRuleTapp returns [EObject current=null] : iv_ruleTapp= ruleTapp EOF ;
    public final EObject entryRuleTapp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTapp = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:962:2: (iv_ruleTapp= ruleTapp EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:963:2: iv_ruleTapp= ruleTapp EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTappRule()); 
            }
            pushFollow(FOLLOW_ruleTapp_in_entryRuleTapp2038);
            iv_ruleTapp=ruleTapp();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTapp; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTapp2048); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTapp"


    // $ANTLR start "ruleTapp"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:970:1: ruleTapp returns [EObject current=null] : ( ( ( '[' )=>otherlv_0= '[' ) ( (lv_term_1_0= ruleTerm ) ) otherlv_2= ']' ( (lv_type_3_0= ruleT ) ) ) ;
    public final EObject ruleTapp() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_term_1_0 = null;

        EObject lv_type_3_0 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:973:28: ( ( ( ( '[' )=>otherlv_0= '[' ) ( (lv_term_1_0= ruleTerm ) ) otherlv_2= ']' ( (lv_type_3_0= ruleT ) ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:974:1: ( ( ( '[' )=>otherlv_0= '[' ) ( (lv_term_1_0= ruleTerm ) ) otherlv_2= ']' ( (lv_type_3_0= ruleT ) ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:974:1: ( ( ( '[' )=>otherlv_0= '[' ) ( (lv_term_1_0= ruleTerm ) ) otherlv_2= ']' ( (lv_type_3_0= ruleT ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:974:2: ( ( '[' )=>otherlv_0= '[' ) ( (lv_term_1_0= ruleTerm ) ) otherlv_2= ']' ( (lv_type_3_0= ruleT ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:974:2: ( ( '[' )=>otherlv_0= '[' )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:974:3: ( '[' )=>otherlv_0= '['
            {
            otherlv_0=(Token)match(input,29,FOLLOW_29_in_ruleTapp2093); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getTappAccess().getLeftSquareBracketKeyword_0());
                  
            }

            }

            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:979:2: ( (lv_term_1_0= ruleTerm ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:980:1: (lv_term_1_0= ruleTerm )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:980:1: (lv_term_1_0= ruleTerm )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:981:3: lv_term_1_0= ruleTerm
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTappAccess().getTermTermParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleTerm_in_ruleTapp2115);
            lv_term_1_0=ruleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTappRule());
              	        }
                     		set(
                     			current, 
                     			"term",
                      		lv_term_1_0, 
                      		"Term");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,30,FOLLOW_30_in_ruleTapp2127); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getTappAccess().getRightSquareBracketKeyword_2());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1001:1: ( (lv_type_3_0= ruleT ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1002:1: (lv_type_3_0= ruleT )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1002:1: (lv_type_3_0= ruleT )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1003:3: lv_type_3_0= ruleT
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTappAccess().getTypeTParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleT_in_ruleTapp2148);
            lv_type_3_0=ruleT();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTappRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_3_0, 
                      		"T");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTapp"


    // $ANTLR start "entryRuleT"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1027:1: entryRuleT returns [EObject current=null] : iv_ruleT= ruleT EOF ;
    public final EObject entryRuleT() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleT = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1028:2: (iv_ruleT= ruleT EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1029:2: iv_ruleT= ruleT EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTRule()); 
            }
            pushFollow(FOLLOW_ruleT_in_entryRuleT2184);
            iv_ruleT=ruleT();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleT; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleT2194); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleT"


    // $ANTLR start "ruleT"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1036:1: ruleT returns [EObject current=null] : (this_T1_0= ruleT1 | this_T2_1= ruleT2 | this_T3_2= ruleT3 | this_Trif_3= ruleTrif ) ;
    public final EObject ruleT() throws RecognitionException {
        EObject current = null;

        EObject this_T1_0 = null;

        EObject this_T2_1 = null;

        EObject this_T3_2 = null;

        EObject this_Trif_3 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1039:28: ( (this_T1_0= ruleT1 | this_T2_1= ruleT2 | this_T3_2= ruleT3 | this_Trif_3= ruleTrif ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1040:1: (this_T1_0= ruleT1 | this_T2_1= ruleT2 | this_T3_2= ruleT3 | this_Trif_3= ruleTrif )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1040:1: (this_T1_0= ruleT1 | this_T2_1= ruleT2 | this_T3_2= ruleT3 | this_Trif_3= ruleTrif )
            int alt13=4;
            switch ( input.LA(1) ) {
            case RULE_TVAR:
                {
                alt13=1;
                }
                break;
            case 25:
                {
                alt13=2;
                }
                break;
            case 32:
                {
                alt13=3;
                }
                break;
            case RULE_ID:
                {
                alt13=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 13, 0, input);

                throw nvae;
            }

            switch (alt13) {
                case 1 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1041:2: this_T1_0= ruleT1
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTAccess().getT1ParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleT1_in_ruleT2244);
                    this_T1_0=ruleT1();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_T1_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1054:2: this_T2_1= ruleT2
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTAccess().getT2ParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleT2_in_ruleT2274);
                    this_T2_1=ruleT2();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_T2_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1067:2: this_T3_2= ruleT3
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTAccess().getT3ParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleT3_in_ruleT2304);
                    this_T3_2=ruleT3();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_T3_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1080:2: this_Trif_3= ruleTrif
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTAccess().getTrifParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleTrif_in_ruleT2334);
                    this_Trif_3=ruleTrif();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Trif_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleT"


    // $ANTLR start "entryRuleT1"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1099:1: entryRuleT1 returns [EObject current=null] : iv_ruleT1= ruleT1 EOF ;
    public final EObject entryRuleT1() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleT1 = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1100:2: (iv_ruleT1= ruleT1 EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1101:2: iv_ruleT1= ruleT1 EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getT1Rule()); 
            }
            pushFollow(FOLLOW_ruleT1_in_entryRuleT12369);
            iv_ruleT1=ruleT1();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleT1; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleT12379); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleT1"


    // $ANTLR start "ruleT1"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1108:1: ruleT1 returns [EObject current=null] : ( ( (lv_p_0_0= RULE_TVAR ) ) (otherlv_1= '->' ( (lv_c_2_0= ruleT ) ) )* ) ;
    public final EObject ruleT1() throws RecognitionException {
        EObject current = null;

        Token lv_p_0_0=null;
        Token otherlv_1=null;
        EObject lv_c_2_0 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1111:28: ( ( ( (lv_p_0_0= RULE_TVAR ) ) (otherlv_1= '->' ( (lv_c_2_0= ruleT ) ) )* ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1112:1: ( ( (lv_p_0_0= RULE_TVAR ) ) (otherlv_1= '->' ( (lv_c_2_0= ruleT ) ) )* )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1112:1: ( ( (lv_p_0_0= RULE_TVAR ) ) (otherlv_1= '->' ( (lv_c_2_0= ruleT ) ) )* )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1112:2: ( (lv_p_0_0= RULE_TVAR ) ) (otherlv_1= '->' ( (lv_c_2_0= ruleT ) ) )*
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1112:2: ( (lv_p_0_0= RULE_TVAR ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1113:1: (lv_p_0_0= RULE_TVAR )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1113:1: (lv_p_0_0= RULE_TVAR )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1114:3: lv_p_0_0= RULE_TVAR
            {
            lv_p_0_0=(Token)match(input,RULE_TVAR,FOLLOW_RULE_TVAR_in_ruleT12421); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_p_0_0, grammarAccess.getT1Access().getPTvarTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getT1Rule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"p",
                      		lv_p_0_0, 
                      		"tvar");
              	    
            }

            }


            }

            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1130:2: (otherlv_1= '->' ( (lv_c_2_0= ruleT ) ) )*
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==31) ) {
                    int LA14_2 = input.LA(2);

                    if ( (synpred23_InternalMyDsl()) ) {
                        alt14=1;
                    }


                }


                switch (alt14) {
            	case 1 :
            	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1130:4: otherlv_1= '->' ( (lv_c_2_0= ruleT ) )
            	    {
            	    otherlv_1=(Token)match(input,31,FOLLOW_31_in_ruleT12439); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getT1Access().getHyphenMinusGreaterThanSignKeyword_1_0());
            	          
            	    }
            	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1134:1: ( (lv_c_2_0= ruleT ) )
            	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1135:1: (lv_c_2_0= ruleT )
            	    {
            	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1135:1: (lv_c_2_0= ruleT )
            	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1136:3: lv_c_2_0= ruleT
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getT1Access().getCTParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleT_in_ruleT12460);
            	    lv_c_2_0=ruleT();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getT1Rule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"c",
            	              		lv_c_2_0, 
            	              		"T");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop14;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleT1"


    // $ANTLR start "entryRuleT2"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1160:1: entryRuleT2 returns [EObject current=null] : iv_ruleT2= ruleT2 EOF ;
    public final EObject entryRuleT2() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleT2 = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1161:2: (iv_ruleT2= ruleT2 EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1162:2: iv_ruleT2= ruleT2 EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getT2Rule()); 
            }
            pushFollow(FOLLOW_ruleT2_in_entryRuleT22498);
            iv_ruleT2=ruleT2();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleT2; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleT22508); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleT2"


    // $ANTLR start "ruleT2"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1169:1: ruleT2 returns [EObject current=null] : (otherlv_0= '(' ( (lv_p1_1_0= ruleT ) ) otherlv_2= ')' (otherlv_3= '->' ( (lv_c1_4_0= ruleT ) ) )* ) ;
    public final EObject ruleT2() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        EObject lv_p1_1_0 = null;

        EObject lv_c1_4_0 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1172:28: ( (otherlv_0= '(' ( (lv_p1_1_0= ruleT ) ) otherlv_2= ')' (otherlv_3= '->' ( (lv_c1_4_0= ruleT ) ) )* ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1173:1: (otherlv_0= '(' ( (lv_p1_1_0= ruleT ) ) otherlv_2= ')' (otherlv_3= '->' ( (lv_c1_4_0= ruleT ) ) )* )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1173:1: (otherlv_0= '(' ( (lv_p1_1_0= ruleT ) ) otherlv_2= ')' (otherlv_3= '->' ( (lv_c1_4_0= ruleT ) ) )* )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1173:3: otherlv_0= '(' ( (lv_p1_1_0= ruleT ) ) otherlv_2= ')' (otherlv_3= '->' ( (lv_c1_4_0= ruleT ) ) )*
            {
            otherlv_0=(Token)match(input,25,FOLLOW_25_in_ruleT22545); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getT2Access().getLeftParenthesisKeyword_0());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1177:1: ( (lv_p1_1_0= ruleT ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1178:1: (lv_p1_1_0= ruleT )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1178:1: (lv_p1_1_0= ruleT )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1179:3: lv_p1_1_0= ruleT
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getT2Access().getP1TParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleT_in_ruleT22566);
            lv_p1_1_0=ruleT();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getT2Rule());
              	        }
                     		set(
                     			current, 
                     			"p1",
                      		lv_p1_1_0, 
                      		"T");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,26,FOLLOW_26_in_ruleT22578); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getT2Access().getRightParenthesisKeyword_2());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1199:1: (otherlv_3= '->' ( (lv_c1_4_0= ruleT ) ) )*
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

                if ( (LA15_0==31) ) {
                    int LA15_2 = input.LA(2);

                    if ( (synpred24_InternalMyDsl()) ) {
                        alt15=1;
                    }


                }


                switch (alt15) {
            	case 1 :
            	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1199:3: otherlv_3= '->' ( (lv_c1_4_0= ruleT ) )
            	    {
            	    otherlv_3=(Token)match(input,31,FOLLOW_31_in_ruleT22591); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_3, grammarAccess.getT2Access().getHyphenMinusGreaterThanSignKeyword_3_0());
            	          
            	    }
            	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1203:1: ( (lv_c1_4_0= ruleT ) )
            	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1204:1: (lv_c1_4_0= ruleT )
            	    {
            	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1204:1: (lv_c1_4_0= ruleT )
            	    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1205:3: lv_c1_4_0= ruleT
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getT2Access().getC1TParserRuleCall_3_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleT_in_ruleT22612);
            	    lv_c1_4_0=ruleT();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getT2Rule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"c1",
            	              		lv_c1_4_0, 
            	              		"T");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop15;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleT2"


    // $ANTLR start "entryRuleT3"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1229:1: entryRuleT3 returns [EObject current=null] : iv_ruleT3= ruleT3 EOF ;
    public final EObject entryRuleT3() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleT3 = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1230:2: (iv_ruleT3= ruleT3 EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1231:2: iv_ruleT3= ruleT3 EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getT3Rule()); 
            }
            pushFollow(FOLLOW_ruleT3_in_entryRuleT32650);
            iv_ruleT3=ruleT3();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleT3; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleT32660); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleT3"


    // $ANTLR start "ruleT3"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1238:1: ruleT3 returns [EObject current=null] : (otherlv_0= 'forall' ( (lv_var_1_0= RULE_TVAR ) ) ( (lv_t_2_0= ruleT ) ) ) ;
    public final EObject ruleT3() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_var_1_0=null;
        EObject lv_t_2_0 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1241:28: ( (otherlv_0= 'forall' ( (lv_var_1_0= RULE_TVAR ) ) ( (lv_t_2_0= ruleT ) ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1242:1: (otherlv_0= 'forall' ( (lv_var_1_0= RULE_TVAR ) ) ( (lv_t_2_0= ruleT ) ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1242:1: (otherlv_0= 'forall' ( (lv_var_1_0= RULE_TVAR ) ) ( (lv_t_2_0= ruleT ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1242:3: otherlv_0= 'forall' ( (lv_var_1_0= RULE_TVAR ) ) ( (lv_t_2_0= ruleT ) )
            {
            otherlv_0=(Token)match(input,32,FOLLOW_32_in_ruleT32697); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getT3Access().getForallKeyword_0());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1246:1: ( (lv_var_1_0= RULE_TVAR ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1247:1: (lv_var_1_0= RULE_TVAR )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1247:1: (lv_var_1_0= RULE_TVAR )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1248:3: lv_var_1_0= RULE_TVAR
            {
            lv_var_1_0=(Token)match(input,RULE_TVAR,FOLLOW_RULE_TVAR_in_ruleT32714); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_var_1_0, grammarAccess.getT3Access().getVarTvarTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getT3Rule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"var",
                      		lv_var_1_0, 
                      		"tvar");
              	    
            }

            }


            }

            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1264:2: ( (lv_t_2_0= ruleT ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1265:1: (lv_t_2_0= ruleT )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1265:1: (lv_t_2_0= ruleT )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1266:3: lv_t_2_0= ruleT
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getT3Access().getTTParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleT_in_ruleT32740);
            lv_t_2_0=ruleT();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getT3Rule());
              	        }
                     		set(
                     			current, 
                     			"t",
                      		lv_t_2_0, 
                      		"T");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleT3"


    // $ANTLR start "entryRuleTypeDich"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1290:1: entryRuleTypeDich returns [EObject current=null] : iv_ruleTypeDich= ruleTypeDich EOF ;
    public final EObject entryRuleTypeDich() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeDich = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1291:2: (iv_ruleTypeDich= ruleTypeDich EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1292:2: iv_ruleTypeDich= ruleTypeDich EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTypeDichRule()); 
            }
            pushFollow(FOLLOW_ruleTypeDich_in_entryRuleTypeDich2776);
            iv_ruleTypeDich=ruleTypeDich();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTypeDich; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTypeDich2786); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTypeDich"


    // $ANTLR start "ruleTypeDich"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1299:1: ruleTypeDich returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_type_2_0= ruleT ) ) ) ;
    public final EObject ruleTypeDich() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        EObject lv_type_2_0 = null;


         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1302:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_type_2_0= ruleT ) ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1303:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_type_2_0= ruleT ) ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1303:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_type_2_0= ruleT ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1303:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_type_2_0= ruleT ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1303:2: ( (lv_name_0_0= RULE_ID ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1304:1: (lv_name_0_0= RULE_ID )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1304:1: (lv_name_0_0= RULE_ID )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1305:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTypeDich2828); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getTypeDichAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getTypeDichRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,19,FOLLOW_19_in_ruleTypeDich2845); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getTypeDichAccess().getEqualsSignKeyword_1());
                  
            }
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1325:1: ( (lv_type_2_0= ruleT ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1326:1: (lv_type_2_0= ruleT )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1326:1: (lv_type_2_0= ruleT )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1327:3: lv_type_2_0= ruleT
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTypeDichAccess().getTypeTParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleT_in_ruleTypeDich2866);
            lv_type_2_0=ruleT();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTypeDichRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_2_0, 
                      		"T");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTypeDich"


    // $ANTLR start "entryRuleTrif"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1351:1: entryRuleTrif returns [EObject current=null] : iv_ruleTrif= ruleTrif EOF ;
    public final EObject entryRuleTrif() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTrif = null;


        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1352:2: (iv_ruleTrif= ruleTrif EOF )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1353:2: iv_ruleTrif= ruleTrif EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTrifRule()); 
            }
            pushFollow(FOLLOW_ruleTrif_in_entryRuleTrif2902);
            iv_ruleTrif=ruleTrif();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTrif; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTrif2912); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTrif"


    // $ANTLR start "ruleTrif"
    // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1360:1: ruleTrif returns [EObject current=null] : ( (otherlv_0= RULE_ID ) ) ;
    public final EObject ruleTrif() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;

         enterRule(); 
            
        try {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1363:28: ( ( (otherlv_0= RULE_ID ) ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1364:1: ( (otherlv_0= RULE_ID ) )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1364:1: ( (otherlv_0= RULE_ID ) )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1365:1: (otherlv_0= RULE_ID )
            {
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1365:1: (otherlv_0= RULE_ID )
            // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1366:3: otherlv_0= RULE_ID
            {
            if ( state.backtracking==0 ) {
               
              		  /* */ 
              		
            }
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getTrifRule());
              	        }
                      
            }
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTrif2960); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		newLeafNode(otherlv_0, grammarAccess.getTrifAccess().getNomeTypeDichCrossReference_0()); 
              	
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTrif"

    // $ANTLR start synpred1_InternalMyDsl
    public final void synpred1_InternalMyDsl_fragment() throws RecognitionException {   
        EObject this_Prog_0 = null;


        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:87:2: (this_Prog_0= ruleProg )
        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:87:2: this_Prog_0= ruleProg
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_ruleProg_in_synpred1_InternalMyDsl141);
        this_Prog_0=ruleProg();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred1_InternalMyDsl

    // $ANTLR start synpred23_InternalMyDsl
    public final void synpred23_InternalMyDsl_fragment() throws RecognitionException {   
        Token otherlv_1=null;
        EObject lv_c_2_0 = null;


        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1130:4: (otherlv_1= '->' ( (lv_c_2_0= ruleT ) ) )
        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1130:4: otherlv_1= '->' ( (lv_c_2_0= ruleT ) )
        {
        otherlv_1=(Token)match(input,31,FOLLOW_31_in_synpred23_InternalMyDsl2439); if (state.failed) return ;
        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1134:1: ( (lv_c_2_0= ruleT ) )
        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1135:1: (lv_c_2_0= ruleT )
        {
        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1135:1: (lv_c_2_0= ruleT )
        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1136:3: lv_c_2_0= ruleT
        {
        if ( state.backtracking==0 ) {
           
          	        newCompositeNode(grammarAccess.getT1Access().getCTParserRuleCall_1_1_0()); 
          	    
        }
        pushFollow(FOLLOW_ruleT_in_synpred23_InternalMyDsl2460);
        lv_c_2_0=ruleT();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred23_InternalMyDsl

    // $ANTLR start synpred24_InternalMyDsl
    public final void synpred24_InternalMyDsl_fragment() throws RecognitionException {   
        Token otherlv_3=null;
        EObject lv_c1_4_0 = null;


        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1199:3: (otherlv_3= '->' ( (lv_c1_4_0= ruleT ) ) )
        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1199:3: otherlv_3= '->' ( (lv_c1_4_0= ruleT ) )
        {
        otherlv_3=(Token)match(input,31,FOLLOW_31_in_synpred24_InternalMyDsl2591); if (state.failed) return ;
        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1203:1: ( (lv_c1_4_0= ruleT ) )
        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1204:1: (lv_c1_4_0= ruleT )
        {
        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1204:1: (lv_c1_4_0= ruleT )
        // ../polyTime/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1205:3: lv_c1_4_0= ruleT
        {
        if ( state.backtracking==0 ) {
           
          	        newCompositeNode(grammarAccess.getT2Access().getC1TParserRuleCall_3_1_0()); 
          	    
        }
        pushFollow(FOLLOW_ruleT_in_synpred24_InternalMyDsl2612);
        lv_c1_4_0=ruleT();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred24_InternalMyDsl

    // Delegated rules

    public final boolean synpred24_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred24_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred1_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred1_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred23_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred23_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }


 

    public static final BitSet FOLLOW_ruleFileSF_in_entryRuleFileSF81 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFileSF91 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProg_in_ruleFileSF141 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProg1_in_ruleFileSF171 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProg_in_entryRuleProg206 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleProg216 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_ruleProg262 = new BitSet(new long[]{0x0000000000032000L});
    public static final BitSet FOLLOW_13_in_ruleProg276 = new BitSet(new long[]{0x0000000000008020L});
    public static final BitSet FOLLOW_ruleTypeDich_in_ruleProg298 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleProg310 = new BitSet(new long[]{0x0000000000008020L});
    public static final BitSet FOLLOW_15_in_ruleProg324 = new BitSet(new long[]{0x0000000000030000L});
    public static final BitSet FOLLOW_16_in_ruleProg339 = new BitSet(new long[]{0x0000000000008020L});
    public static final BitSet FOLLOW_ruleDich_in_ruleProg361 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleProg373 = new BitSet(new long[]{0x0000000000008020L});
    public static final BitSet FOLLOW_15_in_ruleProg387 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleProg401 = new BitSet(new long[]{0x000000002A900060L});
    public static final BitSet FOLLOW_ruleTerm_in_ruleProg422 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleProg434 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProg1_in_entryRuleProg1470 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleProg1480 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_ruleProg1526 = new BitSet(new long[]{0x0000000000012002L});
    public static final BitSet FOLLOW_13_in_ruleProg1540 = new BitSet(new long[]{0x0000000000008020L});
    public static final BitSet FOLLOW_ruleTypeDich_in_ruleProg1562 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleProg1574 = new BitSet(new long[]{0x0000000000008020L});
    public static final BitSet FOLLOW_15_in_ruleProg1588 = new BitSet(new long[]{0x0000000000010002L});
    public static final BitSet FOLLOW_16_in_ruleProg1603 = new BitSet(new long[]{0x0000000000008020L});
    public static final BitSet FOLLOW_ruleDich_in_ruleProg1625 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleProg1637 = new BitSet(new long[]{0x0000000000008020L});
    public static final BitSet FOLLOW_15_in_ruleProg1651 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport689 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImport699 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_ruleImport736 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleImport753 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDich_in_entryRuleDich794 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDich804 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDich846 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleDich863 = new BitSet(new long[]{0x000000002A900060L});
    public static final BitSet FOLLOW_ruleTerm_in_ruleDich884 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNrif_in_entryRuleNrif920 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNrif930 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleNrif978 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTerm_in_entryRuleTerm1013 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTerm1023 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVar_in_ruleTerm1073 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAbs_in_ruleTerm1103 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleApp_in_ruleTerm1133 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUq_in_ruleTerm1163 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTapp_in_ruleTerm1201 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNrif_in_ruleTerm1232 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLet_in_ruleTerm1262 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLet_in_entryRuleLet1297 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLet1307 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleLet1344 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_VARIABLE_in_ruleLet1361 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleLet1378 = new BitSet(new long[]{0x00000001020000A0L});
    public static final BitSet FOLLOW_ruleT_in_ruleLet1399 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleLet1411 = new BitSet(new long[]{0x000000002A900060L});
    public static final BitSet FOLLOW_ruleTerm_in_ruleLet1432 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleLet1444 = new BitSet(new long[]{0x000000002A900060L});
    public static final BitSet FOLLOW_ruleTerm_in_ruleLet1465 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVar_in_entryRuleVar1501 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVar1511 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_VARIABLE_in_ruleVar1552 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAbs_in_entryRuleAbs1592 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAbs1602 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleAbs1639 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_VARIABLE_in_ruleAbs1656 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleAbs1673 = new BitSet(new long[]{0x00000001020000A0L});
    public static final BitSet FOLLOW_ruleT_in_ruleAbs1694 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleAbs1706 = new BitSet(new long[]{0x000000002A900060L});
    public static final BitSet FOLLOW_ruleTerm_in_ruleAbs1727 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleApp_in_entryRuleApp1763 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleApp1773 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_ruleApp1810 = new BitSet(new long[]{0x000000002A900060L});
    public static final BitSet FOLLOW_ruleTerm_in_ruleApp1831 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleApp1843 = new BitSet(new long[]{0x000000002A900060L});
    public static final BitSet FOLLOW_ruleTerm_in_ruleApp1864 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUq_in_entryRuleUq1900 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUq1910 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_ruleUq1947 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_TVAR_in_ruleUq1964 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleUq1981 = new BitSet(new long[]{0x000000002A900060L});
    public static final BitSet FOLLOW_ruleTerm_in_ruleUq2002 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTapp_in_entryRuleTapp2038 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTapp2048 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_ruleTapp2093 = new BitSet(new long[]{0x000000002A900060L});
    public static final BitSet FOLLOW_ruleTerm_in_ruleTapp2115 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleTapp2127 = new BitSet(new long[]{0x00000001020000A0L});
    public static final BitSet FOLLOW_ruleT_in_ruleTapp2148 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleT_in_entryRuleT2184 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleT2194 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleT1_in_ruleT2244 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleT2_in_ruleT2274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleT3_in_ruleT2304 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTrif_in_ruleT2334 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleT1_in_entryRuleT12369 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleT12379 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_TVAR_in_ruleT12421 = new BitSet(new long[]{0x0000000080000002L});
    public static final BitSet FOLLOW_31_in_ruleT12439 = new BitSet(new long[]{0x00000001020000A0L});
    public static final BitSet FOLLOW_ruleT_in_ruleT12460 = new BitSet(new long[]{0x0000000080000002L});
    public static final BitSet FOLLOW_ruleT2_in_entryRuleT22498 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleT22508 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_ruleT22545 = new BitSet(new long[]{0x00000001020000A0L});
    public static final BitSet FOLLOW_ruleT_in_ruleT22566 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleT22578 = new BitSet(new long[]{0x0000000080000002L});
    public static final BitSet FOLLOW_31_in_ruleT22591 = new BitSet(new long[]{0x00000001020000A0L});
    public static final BitSet FOLLOW_ruleT_in_ruleT22612 = new BitSet(new long[]{0x0000000080000002L});
    public static final BitSet FOLLOW_ruleT3_in_entryRuleT32650 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleT32660 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleT32697 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_TVAR_in_ruleT32714 = new BitSet(new long[]{0x00000001020000A0L});
    public static final BitSet FOLLOW_ruleT_in_ruleT32740 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeDich_in_entryRuleTypeDich2776 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTypeDich2786 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTypeDich2828 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleTypeDich2845 = new BitSet(new long[]{0x00000001020000A0L});
    public static final BitSet FOLLOW_ruleT_in_ruleTypeDich2866 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTrif_in_entryRuleTrif2902 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTrif2912 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTrif2960 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProg_in_synpred1_InternalMyDsl141 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_synpred23_InternalMyDsl2439 = new BitSet(new long[]{0x00000001020000A0L});
    public static final BitSet FOLLOW_ruleT_in_synpred23_InternalMyDsl2460 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_synpred24_InternalMyDsl2591 = new BitSet(new long[]{0x00000001020000A0L});
    public static final BitSet FOLLOW_ruleT_in_synpred24_InternalMyDsl2612 = new BitSet(new long[]{0x0000000000000002L});

}